package com.atguigu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @author wk
 * @create 2021-06-06 10:16
 */
@Controller
public class ScopeController {
    /**
     * 测试使用原生的servletApi向请求域中共享数据
     * @param request
     * @return
     */
    @RequestMapping("/testScope")
    public String testServletAPI(HttpServletRequest request){
        request.setAttribute("你的名字","归海一刀");
        return "success";
    }

    /**
     * 测试使用ModelAndView向请求域中共享数据
     * ModelAndView有Model和View的功能
     * Model主要用于向请求域共享数据
     * View主要用于设置视图，实现页面跳转
     * @return
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("你的名字","天涯");
        modelAndView.setViewName("success");
        return modelAndView;
    }

    /**
     * 测试使用map向请求域中共享数据
     * @param map
     * @return
     */
    @RequestMapping("/testMap")
    public String testMap(Map<String,Object> map){
        map.put("testMap","测试map");
        return "success";
    }
    /**
     * 测试使用Model向请求域中共享数据
     * @param model
     * @return
     */
    @RequestMapping("/testModel")
    public String testModel(Model model){
        model.addAttribute("testModel","测试Model");
        return "success";
    }
    /**
     * 测试使用map向请求域中共享数据
     * @param modelMap
     * @return
     */
    @RequestMapping("/testModelMap")
    public String testModelMap(ModelMap modelMap){
        modelMap.addAttribute("testModelMap","测试ModelMap");
        return "success";
    }

}
